Risk Signal: Mexican INE Data & Face Validation

Jumio has a number of database check services available for Mexico. These checks allow you to validate Mexican National IDs and personal identifiable information.

This service connects with the Mexican National Electoral Institute (Instituto Nacional Electoral, INE) to validate INE ID numbers, owner information and biometric information. There are 2 services that are available for INE:

  1. Data Validation of Voting credential at INE:

    1. Verifies that the data registered at INE’s nominal database matches those presented by the user.

    2. Validates that the credential is a valid document.

  2. Biometric Validation of Voting credential at INE:

    1. Verifies that the face of the user matches that registered in the INE.

Note: The data validation and Biometric validation services both require a direct contract with the INE. Please see your Jumio Sales representative for more information. We work with a partner to directly integrate with INE.

Service Name Description Required Fields Verifiable Fields
Mexico INE Data Validation Input is verified against the INE
  • Elector Key

  • OCR

  • Issue #

 

  • Name
  • Paternal Surname
  • Maternal Surname
  • Curp #(National Id)
  • OCR#
  • Elector Key
  • Registration Year
  • Issuing Year
  • Issuing Number
Mexico INE Face Validation Input is verified against the INE
  • Elector Key
  • OCR
  • Issue #
  • Selfie Image
  • Name

  • Paternal Surname

  • Maternal Surname

  • Face Match

  • OCR#

  • Elector Key

  • Registration Year

  • Issuing Year

  • Issuing Number

  • Curp #(Id number)

Customer Onboarding

Due to the nature of the integration with INE, we will work with our partner to stand up a dedicated secure infrastructure that is required by the Mexican Government to access INE. Once the contract with INE is signed, our production team will work you and our partner (FIMPE) to start the onboarding process.

Our production team needs the following information:

AWS Region and Stage where Middleware needs to be deployed.

  • Tenant Information:

  • Tenant GUID

  • Tenant Id

  • Tenant Name

FIMPE Middleware Key files(provided by FIMPE):

  • INSTITUTONACIONALELECTORAL_publica.key

  • MW_KEYS_TO_SVBI_PRIVATE_MW_KEY

  • publica.key

  • privada.key

  • FIMPE SVBI Port Number(provided by FIMPE)

The estimated time needed for completion:

  • 4-5 days/client to setup the environments

  • 2 days/client for the Engineering team to test and certify the setup and functionality.

Required Credentials

Prepared Data: INE Data

Key Type Mandatory Description
firstName string no  
paternalSurname string no  
maternalSurname string no  
address Object no Only the fields which are mentioned are required
address.country      
string no    
country should be set to “MEX”      
id Object no See in next row
id.idNumber string no CURP ID number # example "XXXX910225XXXXXS09"
id.Type string conditional ID_CARD
id.subType string no  
id.issuingDate string no  
id.expiryDate string no  
ine Object yes See in next row
ine.cic string no CIC number of the elector credential
ine.ocr string yes OCR number of the elector credential
ine.issuingNumber string yes Issuing Number - Numeric
ine.electorKey string yes Elector Key - 18 Characters
ine.registrationYear string no YYYY
ine.issuingYear string no YYYY

Capability Request

{
    "firstName": "XXXXX",
    "paternalSurname": "XXXXXX",
    "maternalSurname": "XXXXX",
    "address": {
        "country": "MEX"
    },
    "id": {
        "idNumber": "XYZA891218ABCEFG01",
        "type": "ID_CARD",
        "subType": "",
        "issuingDate": "",
        "expiryDate": ""
    },
    "ine": {
        "cic": "201112341",
        "ocr": "0000345678911", <mandatory>
        "issuingNumber": "02", <mandatory>
        "electorKey": "ABCDEF12341809C100",<mandatory>
        "registrationYear": 2008,
        "issuingYear": 2019
    }
}

Response Values

Parameter Type Note
id string UUID of the capability
credentials array(Credential)  
decision object  
decision.type string

Possible values:

  • NOT_EXECUTED

  • PASSED

  • REJECTED

  • WARNING

If curp # is a mismatch decision = REJECT ,risk score 100 else:

If elector key, ocr and name is a match, decision = PASS , risk score is 0, else decision=WARNING, risk score is 50

decision.details object  
decision.details.label string

Possible values:

  • OK

  • DENY

  • ALERT

  • NOT_ENOUGH_DATA

  • TECHNICAL_ERROR

  • PERMISSION_DENIED

  • BAD_REQUEST

  • PRECONDITION_NOT_FULFILLED

data object  
data.completeNameMatch string MATCH / NOT_MATCH
data.nationalIdMatch string MATCH / NOT_MATCH
data.ocrMatch string MATCH / NOT_MATCH
data.issuingNumberMatch string MATCH / NOT_MATCH
data.registrationYearMatch string MATCH / NOT_MATCH
data.issuingYearMatch string MATCH / NOT_MATCH
data.electorKeyMatch string MATCH / NOT_MATCH
data.paternalSurnameMatch string MATCH / NOT_MATCH
data.maternalSurnameMatch string MATCH / NOT_MATCH

Credential

Key Type Description
id string UUID of credential used
category string category of credential used

Capability Response

"govtIdVerification": [
            {
                "id": "d1858198-d2f2-4235-97f7-5f9cb088a2ae",
                "credentials": [
                    {
                        "id": "21135260-f435-4052-93a7-a943f12d5f2c",
                        "category": "ID"
                    }
                ],
                "decision": {
                    "type": "WARNING",
                    "details": {
                        "label": "ALERT"
                    }
                },
                "data": {
                    "completeNameMatch": "NOT_MATCH",
                    "nationalIdMatch": "MATCH",
                    "ocrMatch": "MATCH",
                    "issuingNumberMatch": "NOT_MATCH",
                    "registrationYearMatch": "NOT_MATCH",
                    "issuingYearMatch": "MATCH",
                    "electorKeyMatch": "MATCH",
                    "paternalSurnameMatch": "MATCH",
                    "maternalSurnameMatch": "MATCH"
                }
            }
        ]

Required Credentials

Prepared Data: INE Data with Biometric (Selfie)

Key Type Mandatory Description
firstName string no  
paternalSurname string no  
maternalSurname string no  
address Object no Only the fields which are mentioned are required
address.country      
string no    
country should be set to “MEX”      
id Object no See in next row
id.idNumber string no CURP ID number # example "XXXX910225XXXXXS09"
id.Type string conditional ID_CARD
id.subType string no  
id.issuingDate string no  
id.expiryDate string no  
ine Object yes See in next row
ine.cic string no CIC number of the elector credential
ine.ocr string yes OCR number of the elector credential
ine.issuingNumber string yes Issuing Number - Numeric
ine.electorKey string yes Elector Key - 18 Characters
ine.registrationYear string no YYYY
ine.issuingYear string no YYYY

Note: Biometric (Selfie) needs to be sent with Prepared Data.

Capability Request

{
    "firstName": "XXXXX",
    "paternalSurname": "XXXXXX",
    "maternalSurname": "XXXXX",
    "address": {
        "country": "MEX"
    },
    "id": {
        "idNumber": "XYZA891218ABCEFG01",
        "type": "ID_CARD",
        "subType": "",
        "issuingDate": "",
        "expiryDate": ""
    },
    "ine": {
        "cic": "201112341",
        "ocr": "0000345678911", <mandatory>
        "issuingNumber": "02", <mandatory>
        "electorKey": "ABCDEF12341809C100",<mandatory>
        "registrationYear": 2008,
        "issuingYear": 2019
    }
}

Response Values

Parameter Type Note
id string UUID of the capability
credentials array(Credential)  
decision object  
decision.type string

Possible values:

  • NOT_EXECUTED

  • PASSED

  • REJECTED

  • WARNING

If curp is a mismatch and face similarity is <=50 % decision = REJECT , risk score is 100 else: If the elector key, ocr and name is a match with similarity >=85%, decision = PASS , risk score = 0 else decision=WARNING. Risk score = 50

decision.details object  
decision.details.label string

Possible values:

  • OK

  • DENY

  • ALERT

  • NOT_ENOUGH_DATA

  • TECHNICAL_ERROR

  • PERMISSION_DENIED

  • BAD_REQUEST

  • PRECONDITION_NOT_FULFILLED

data object  
data.NameMatch string MATCH / NOT_MATCH
data.faceMatch string MATCH / NOT_MATCH
data.ocrMatch string MATCH / NOT_MATCH
data.issuingNumberMatch string MATCH / NOT_MATCH
data.registrationYearMatch string MATCH / NOT_MATCH
data.issuingYearMatch string MATCH / NOT_MATCH
data.electorKeyMatch string MATCH / NOT_MATCH
data.paternalSurnameMatch string MATCH / NOT_MATCH
data.maternalSurnameMatch string MATCH / NOT_MATCH
data.idNumberMatch string MATCH / NOT_MATCH

Credential

Key Type Description
id string UUID of credential used
category string category of credential used

Capability Response

"biometricVerification": [
            {
                "id": "c0015f7b-0999-4682-a1a6-a10241a01f7c",
                "credentials": [
                    {
                        "id": "36b715ee-2822-488d-ac2a-159536645411",
                        "category": "DATA"
                    },
                    {
                        "id": "adce826e-a43d-45d4-84f7-80e2b917fda1",
                        "category": "SELFIE"
                    }
                ],
                "decision": {
                    "type": "REJECTED",
                    "details": {
                        "label": "HIGH_RISK"
                    }
                },
                "data": {
                    "nameMatch": "NOT_MATCH",
                    "faceMatch": "NOT_MATCH",
                    "ocrMatch": "MATCH",
                    "issuingNumberMatch": "NOT_MATCH",
                    "registrationYearMatch": "NOT_MATCH",
                    "issuingYearMatch": "MATCH",
                    "electorKeyMatch": "MATCH",
                    "paternalSurnameMatch": "MATCH",
                    "maternalSurnameMatch": "MATCH",
                    "idNumberMatch": "MATCH"
                }
]
}